package com.iwhalecloud.bss.kite.cucc.client.api.flow;

import com.iwhalecloud.bss.kite.cucc.client.dto.flow.FlowTrackInfo;
import com.iwhalecloud.bss.kite.cucc.client.dto.flow.FlowTrackReq;
import com.iwhalecloud.bss.kite.cucc.client.vo.scene.OneStopTrackInfoVO;
import com.iwhalecloud.bss.kite.cucc.client.vo.scene.OssTrackInfoVO;
import com.iwhalecloud.bss.kite.cucc.client.vo.scene.ProcessFlowchartVO;
import com.iwhalecloud.bss.kite.cucc.client.vo.scene.TrackInfoVO;

/**
 * @author yangwj
 * @date 2020/5/7 17:56
 */
public interface IFlowService {

    /**
     * 根据订单id获取进度信息
     * @param orderId
     * @return
     */
    TrackInfoVO getOrderProgressInfo(String orderId);

    /**
     * 根据订单id和taskCode获取OSS进度信息
     * @param orderId
     * @return
     */
    OssTrackInfoVO getOssProgressInfo(String orderId, String taskCode);

    /**
     * 根据订单id、taskCode以及任务ID获取一站式进度信息
     * @param orderId
     * @return
     */
    OneStopTrackInfoVO getOneStopProgressInfo(String orderId, String taskCode, String taskId);

    /**
     * 获取流程图
     * 入参说明:
     * 1.taskld=任务ID，worksheetType=1，通过任务ID获取主单的环节流程图;
     * 2.taskld=任务ID，worksheetType=2，通过任务ID获取相同层级的任务流程图;
     * 3.taskld=主单号或子单号，worksheetType=3，通过订单号获取主单的环节流程图;
     * 4.taskld=子单号，worksheetType=4，通过子订单号获取子单的环节流程图;
     * @param orderId
     * @param worksheetType
     * @return
     */
    ProcessFlowchartVO getProcessFlowchart(String orderId,String worksheetType);

    /**
     * 获取流程图
     * 入参说明:
     * 1.taskld=任务ID，worksheetType=1，通过任务ID获取主单的环节流程图;
     * 2.taskId=任务ID，worksheetType=2，通过任务ID获取相同层级的任务流程图；
     * 3.taskId=主单号或子单号，worksheetType=3，通过订单号获取主单的环节流程图
     * 4.taskId=子单号，worksheetType=4，通过子订单号获取子单的环节流程图；
     * 5.taskId=子单号，worksheetType=5，通过子订单号获取子单的简易环节流程图；
     * @param orderId
     * @param worksheetType
     * @return
     */
    ProcessFlowchartVO getOrderProcessFlowchart(String orderId,String worksheetType);

    /**
     * 查询流程轨迹信息
     * @author zhang.song
     * @date 2021-04-16 16:43
     * @param flowTrackReq
     * @return com.iwhalecloud.bss.kite.cucc.client.dto.flow.FlowTrackInfo
     */
    FlowTrackInfo getFlowTrack(FlowTrackReq flowTrackReq);
}
